const { searchByKeyword } = require("../../../utils/request");
const config = require("../../../utils/config");

Page({
  data: {
    keyword: "",
    activeTab: "artwork", // 当前选中的标签
    artworks: [], // 艺术作品数据
    artists: [], // 艺术家数据
    pageNum: 1, // 当前页数
    pageSize: 10, // 每页显示的条数
    isLoading: false, // 是否正在加载数据
    hasMore: true, // 是否还有更多数据
  },

  onLoad(options) {
    this.setData({ keyword: options.query || "" });
    this.loadResults();
  },

  // 加载搜索结果
  async loadResults() {
    const { pageNum, pageSize, artworks, artists, isLoading, hasMore } = this.data;
    const keyword = this.data.keyword.trim();

    if (isLoading || !hasMore) return; // 防止重复加载或没有更多数据时继续加载

    this.setData({ isLoading: true });

    try {
      const response = await searchByKeyword({ keyword, pageNum, pageSize });
      if (response && response.data) {
        const newArtworks = (response.data.artworks || []).map((item) => ({
          ...item,
          primaryImageSmallUrl: `${config.ImageURL}${item.primaryImageSmallUrl}`,
        }));

        const newArtists = (response.data.artists || []).map((item) => ({
          ...item,
          photoUrl: `${config.ImageURL}${item.photoUrl}`,
        }));

        // 更新状态
        this.setData({
          artworks: [...artworks, ...newArtworks], // 合并新的艺术作品数据
          artists: [...artists, ...newArtists], // 合并新的艺术家数据
          hasMore: newArtworks.length > 0 || newArtists.length > 0, // 判断是否还有更多数据
          pageNum: pageNum + 1, // 增加页码
        });
      } else {
        this.setData({ hasMore: false });
      }
    } catch (error) {
      console.error("加载搜索结果失败:", error);
      wx.showToast({
        title: "Failed to load results",
        icon: "none",
      });
    } finally {
      this.setData({ isLoading: false });
    }
  },

  // 切换 Tab
  onTabTap(e) {
    const tab = e.currentTarget.dataset.tab;
    this.setData({ activeTab: tab });
  },

  // 输入框输入事件
  onInput(e) {
    this.setData({ keyword: e.detail.value.trim() });
  },

  // 点击搜索按钮
  onSearch() {
    const keyword = this.data.keyword;
    // 更新历史搜索
    let history = wx.getStorageSync("searchHistory") || []; // 确保历史搜索数组存在
    const existingIndex = history.indexOf(keyword);

    // 如果已存在，则删除原位置的记录
    if (existingIndex !== -1) {
      history.splice(existingIndex, 1);
    }

    // 将新搜索内容添加到最前面
    history.unshift(keyword);

    // 限制历史记录长度
    if (history.length > 10) history.pop();

    // 更新数据并保存到本地存储
    this.setData({ history });
    wx.setStorageSync("searchHistory", history);

    this.setData(
      {
        pageNum: 1, // 重置页码
        artworks: [], // 清空艺术作品数据
        artists: [], // 清空艺术家数据
        hasMore: true, // 重置是否还有更多数据
      },
      () => {
        this.loadResults();
      }
    );
  },

  // 下拉加载更多
  onReachBottom() {
    this.loadResults();
  },
});
